/**
 *
 * @description:
 * @author: junyong.hong
 * @createTime: 2018/3/20
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
var path = require('path')
var webpack = require('webpack')

// 对无用的css进行过滤
var PurifyCSS = require('purifycss-webpack')
var glob = require('glob-all')

var ExtractTextWebpackPlugin = require('extract-text-webpack-plugin')



module.exports = {
    entry: {
        app: './src/app.js'
    },

    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].bundle.js',
        chunkFilename: '[name].bundle.js'
    },

    // 解析路径
    resolve: {
        alias: {
            // jquery$：把jquery解析到某个路径下
            jquery$: path.resolve(__dirname, 'src/lib/jquery-2.1.1.js')
        }
    },

    module: {
        rules: [
            {
                test: /\.less$/,
                use: ExtractTextWebpackPlugin.extract({
                    // 当不提取用什么方式加载到页面上
                    fallback: {
                        // 放到HTML页面上
                        loader: 'style-loader',
                        options: {
                            // 让样式结合到一个style标签上
                            singleton: true,
                        }
                    },
                    // 继续处理的loader
                    use: [
                        {
                            // 把css交给css-loader，让他处理完js可以import css代码，再交给style-loader（相当于引用css文件）
                            loader: 'css-loader'
                        },
                        {
                            loader: 'postcss-loader',
                            options: {
                                ident: 'postcss',
                                plugins: [
                                    // 自动合成雪碧图
                                    require('postcss-sprites')({
                                        // 指定输出的路径
                                        spritePath: 'dist/assets/imgs/sprites'
                                    }),
                                    require('postcss-cssnext')(),
                                ]
                            }
                        },
                        {
                            loader: 'less-loader'
                        }
                    ]
                })
            },

            {
                test:/\.(png|jpg|jped|gif)$/,
                use: [
                    // {
                    //     // 引入的图片
                    //     loader: 'file-loader',
                    //     options: {
                    //         // 设置绝对路径（指定路径，例如图片路径为：aa/1.jpg）
                    //         // publicPath: 'aa/',
                    //         // 输出的路径放到dist目录下（暂时没用，因为默认放在dist目录下）
                    //         // outputPath: 'dist/',
                    //         // 图片会放在dist/assets/imgs里，如果没有设置true，会裸露在外面
                    //         useRelativePath: true
                    //     }
                    // }
                    {
                        // base64图片
                        loader: 'url-loader',
                        options: {
                            name: '[name]-min[hash:5].[ext]',
                            // 当图片小于多少K的时候，转换成base64 100000 10K
                            limit: 10000,
                            // 图片会放在dist/assets/imgs里，如果没有设置true，会裸露在外面
                            useRelativePath: true
                        }
                    },
                    {
                        loader: 'img-loader',
                        options: {
                            pngquant: {
                                // 压缩图片比例
                                quality: 80
                            }
                        }
                    }
                ]
            },

            {
                test: /\.(eot|woff|woff2|ttf|svg)$/,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            name: '[name]-[hash:5].[ext]',
                            limit: 5000,
                            publicPath: '',
                            useRelativePath: true
                        }
                    }
                ]
            }
        ]
    },

    plugins: [
        // 对插件的调用
        new ExtractTextWebpackPlugin({
            // 打包后的名字
            filename: '[name].min.css',
            // 指定提取范围
            allChunks: false
        }),

        // 要写在ExtractTextWebpackPlugin的后面
        new PurifyCSS({
            paths: glob.sync([
                path.join(__dirname, './*.html'),
                path.join(__dirname, './src/*.js')
            ])
        }),

        // 在每一个模块注入$这个变量
        new webpack.ProvidePlugin({
            $: 'jquery'
        }),

        // 对没有用到的js代码进行过滤
        new webpack.optimize.UglifyJsPlugin()
    ]
}